﻿using System;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Configuration;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class Service : System.Web.Services.WebService
{
    public Service () {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }


    #region Metodos para Atendimento Web e Mobile e Desktop

    [WebMethod] // Entidades (Medico, Paciente, Organizacoes) consultam as fichas médica do paciente desde que estejam autenticados por entidadeconsulta e entidadesenha
    public string WSPacienteConsultaFicha(int pacienteid, int medicoid, int especialidadeid, int organizacaoid, int convenioid, DateTime dataevento, string tipoatendimento, int entidadeconsulta, string entidadesenha)
    {
         // Dados de Retorno: int medicoid, int especialidadeid, int organizacaoid, int convenioid, DateTime dataevento, string tipoatendimento, string sintomas, string diagnostico, string prescricao, string observacoes;

        DataSet dados = null;


        return dados.ToString();  
            
              }
   
    [WebMethod] // Médico pode criar e adicionar ficha médica do paciente desde que identificado pela medicosenha
    public string WSPacienteAdicionaFicha(int pacienteid, int medicoid, int especialidadeid, int organizacaoid, int convenioid, DateTime dataevento, string tipoatendimento, string sintomas, string diagnostico, string prescricao, string observacoes, string medicosenha)
    {
        return "Dados Cadastrados";
    }

    [WebMethod] // Paciente pode alterar os dados dele
    public string WSPacienteAlteraDados(int pacienteid, string cpf, string nome, string tiposanguineo, char sexo, DateTime datanascimento, string restricoes, string endereco, string email, string senha)
    {
        return "Dados Alterados";
    }
   
    [WebMethod] // Paciente pode cadastrar os dados dele
    public string WSPacienteCadastra(string cpf, string nome, string tiposanguineo, char sexo, DateTime datanascimento, string restricoes, string endereco, string email, string senha) {
        return "Dados Cadastrados";
    }
    
    [WebMethod] // Paciente pode agendar consulta, desde que devidamente identificado
    public string WSMarcarConsulta(int pacienteid, int organizacaoid, int medicoid, int convenioid, DateTime consultadata, DateTime consultahora, string pacientesenha) {
        return "Consulta Agendada";
    }
   
    [WebMethod] // Metodo para paciente consultar os médicos, especialidades, organizacoes e localizacoes
    public DataSet WSConsultaMedicos() {

       
        DataSet ds = new DataSet();
        try
        {
            string connStr = ConfigurationManager.ConnectionStrings["MedicalCloudCS"].ToString();
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                SqlCommand comando = new SqlCommand("dbo.PegaMedicos");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Connection = conn;
                SqlDataAdapter da = new SqlDataAdapter(comando);
                //da.SelectCommand.Parameters.Add(new SqlParameter("@medicoID", medico));
                da.Fill(ds);
            }
        }
        finally { }
        return ds;
    }

    [WebMethod] // Metodo para paciente consultar a ficha médica dele
    public DataSet WSConsultaFicha(int pacienteID) {

        DataSet ds = new DataSet();
        try
        {
            string connStr = ConfigurationManager.ConnectionStrings["MedicalCloudCS"].ToString();
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                SqlCommand comando = new SqlCommand("dbo.PegaFichasPaciente");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Connection = conn;
                SqlDataAdapter da = new SqlDataAdapter(comando);
                da.SelectCommand.Parameters.Add(new SqlParameter("@pacienteID", pacienteID));
                da.Fill(ds);
            }
        }
        finally { }
        return ds;
    }
    [WebMethod] // Metodo para paciente consultar a ficha médica dele
    public DataSet WSConsultaDados(int pacienteID)
    {
        DataSet ds = new DataSet();
        try
        {
            string connStr = ConfigurationManager.ConnectionStrings["MedicalCloudCS"].ToString();
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                SqlCommand comando = new SqlCommand("dbo.PegaDadosPaciente");
                comando.CommandType = CommandType.StoredProcedure;
                comando.Connection = conn;
                SqlDataAdapter da = new SqlDataAdapter(comando);
                da.SelectCommand.Parameters.Add(new SqlParameter("@pacienteID", pacienteID));
                da.Fill(ds);
            }
        }
        finally { }
        return ds;
    }

    #endregion

    #region Métodos de Utilização Restrita às Organizações
    
    [WebMethod] // Método para cadastrar a organização
    public string WSOrganizacaoCadastra(string organizacaonome, string organizacaoendereco, string organizacaotipo, string email, string senha) {
        return "Organizacao Cadastrada";
    }
 
    [WebMethod] // Insere especialidades no 
    public string WSEspecialidadeInserir(string especialidadenome) {
        return "Especialidade Cadastrada";
    }
 
    [WebMethod] // Cadastra o convenio
    public string WSConvenioCadastrar(string convenionome, string convenioemail, string conveniosenha) {
        return "Convenio Cadastrado";
    }
  
    [WebMethod] // Consulta o valor pago por cada especialidade
    public string WSConvenioConsultarPreco(int especialidadeid, int convenioid, int organizacaoid, int organizacaosenha) {
        return "Método para ";
    }
  
    [WebMethod] // Permite ao convenio inserir e alterar do valor pago por especialidade
    public string WSConvenioAlterarPreco(int convenioid, string conveniosenha, int especialidadeid, int especialidadetipo) {
        return "Método para alterar o preço do convenio";
    }
  
    [WebMethod] // Permite cadastrar o médico e sua especialidade
    public string WSMedicoCadastrar(string medicocrm, string mediconome, int especialidadeid, string medicoemail, string medicosenha)
    {
        return "Método para Cadastrar Médicos";
    }

    #endregion

    #region Métodos Auxiliares a Consultas

    [WebMethod] // Retorna Especialidades Médicas - em branco retorna dataset com nome e id de especialidades, senão retorna nome da especialidade
    public string WSPegaEspecialidade(int especialidadeid)
    {
        return "Retorna Especialidades";
    }

    [WebMethod] // Retorna Convenios Medicos - em branco retorna dataset com nome e id de convenios, senão retorna nome do convenio
    public string WSPegaConvenios(int convenioid)
    {
        return "Retorna Convenios";
    }
    
    
    #endregion

    #region Metodos de Login

    [WebMethod] // Retorna Codigo Usuario se login aceito - Recebe Login, Senha e Contexto do Usuario (Usuario, Medico, Convenio, Organização)
    public int WSLoginUsuario(string login, string senha, string contexto)
    {   int valor=0;
    try
    {
        string connStr = ConfigurationManager.ConnectionStrings["MedicalCloudCS"].ToString();
        using (SqlConnection conn = new SqlConnection(connStr)) {
        conn.Open();
        
            SqlDataAdapter da = new SqlDataAdapter("PacienteLogin", conn);

            //Set the command type as StoredProcedure.
            da.SelectCommand.CommandType = CommandType.StoredProcedure;

            //Create and add a parameter to Parameters collection for the stored procedure.
            da.SelectCommand.Parameters.Add(new SqlParameter("@Paciente_Email", login)); //SqlDbType.VarChar, 50));
            da.SelectCommand.Parameters.Add(new SqlParameter("@Paciente_Senha", senha)); //SqlDbType.VarChar, 50));
            SqlDataReader rdr = da.SelectCommand.ExecuteReader();
            while (rdr.Read())
            {
                if (rdr[0] != null) valor = (int)rdr[0];
                else valor = 0;
            }
        }
    }
    finally { }
    return valor;
    }
    
  
    }
    #endregion





